const errorHandler = (err, req, res, next) => {
    let error = { ...err };
    error.message = err.message;

    // 记录错误日志
    console.error('错误详情:', err);

    // Sequelize 验证错误
    if (err.name === 'SequelizeValidationError') {
        const message = err.errors.map(error => error.message).join(', ');
        error = {
            statusCode: 400,
            message: `数据验证失败: ${message}`
        };
    }

    // Sequelize 唯一约束错误
    if (err.name === 'SequelizeUniqueConstraintError') {
        const message = '该数据已存在';
        error = {
            statusCode: 400,
            message
        };
    }

    // JWT 错误
    if (err.name === 'JsonWebTokenError') {
        error = {
            statusCode: 401,
            message: '无效的 token'
        };
    }

    // JWT 过期错误
    if (err.name === 'TokenExpiredError') {
        error = {
            statusCode: 401,
            message: 'Token 已过期'
        };
    }

    res.status(error.statusCode || 500).json({
        success: false,
        message: error.message || '服务器内部错误'
    });
};

module.exports = errorHandler;